/**
 * API 接口配置
 */

// API 基础路径
export const BASE_URL = 'http://localhost:8081/api'

// API 超时时间（毫秒）
export const TIMEOUT = 15000

// API 响应码
export const API_CODE = {
  SUCCESS: 200,           // 成功
  UNAUTHORIZED: 401,      // 未授权
  FORBIDDEN: 403,        // 禁止访问
  NOT_FOUND: 404,        // 未找到
  SERVER_ERROR: 500      // 服务器错误
}

// API 错误信息
export const ERROR_MSG = {
  NETWORK_ERROR: '网络请求失败，请检查网络连接',
  TIMEOUT_ERROR: '请求超时，请稍后重试',
  SERVER_ERROR: '服务器错误，请稍后重试',
  NOT_FOUND: '请求的资源不存在',
  UNAUTHORIZED: '登录已过期，请重新登录',
  FORBIDDEN: '没有权限访问该资源'
}

// 不需要显示错误提示的 API 路径
export const NO_ERROR_MSG_API = [
  '/user/check',
  '/common/heartbeat'
]

// 不需要携带 token 的 API 路径
export const NO_TOKEN_API = [
  '/user/login',
  '/user/register',
  '/common/captcha'
]

// 文件上传配置
export const UPLOAD_CONFIG = {
  // 文件上传地址
  url: '/common/upload',
  // 文件大小限制（字节）
  maxSize: 10 * 1024 * 1024,
  // 允许的文件类型
  accept: '.jpg,.jpeg,.png,.gif,.pdf,.doc,.docx',
  // 文件上传字段名
  fieldName: 'file'
}

// API 版本
export const API_VERSION = 'v1'

// 请求头配置
export const HEADERS = {
  'Content-Type': 'application/json;charset=UTF-8',
  'Accept': 'application/json',
  'X-Requested-With': 'XMLHttpRequest',
  'X-API-Version': API_VERSION
}

// 响应数据结构配置
export const RESPONSE_STRUCTURE = {
  codeField: 'code',      // 状态码字段名
  dataField: 'data',      // 数据字段名
  messageField: 'message' // 消息字段名
}

// 分页参数配置
export const PAGINATION_PARAMS = {
  pageField: 'page',      // 页码字段名
  sizeField: 'size',      // 每页数量字段名
  totalField: 'total',    // 总数字段名
  defaultSize: 10         // 默认每页数量
}

// API请求封装
export const fetchAPI = async (endpoint, options = {}) => {
  try {
    console.log('Requesting:', `${BASE_URL}${endpoint}`)
    const response = await fetch(`${BASE_URL}${endpoint}`, {
      ...options,
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
        ...options.headers
      }
    })
    
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`)
    }
    
    const data = await response.json()
    console.log('Response:', data)
    return data
  } catch (error) {
    console.error('API request failed:', error)
    throw error
  }
}

// API路由配置
export const API_ROUTES = {
  home: "/home/data",
  news: "/news",
  solutions: "/solutions",
  cases: "/cases",
  feedback: "/feedback",
  about: "/about"
}

